package com.sugon.entity;

import cn.hutool.core.date.DateUtil;
import com.sugon.consts.DevInspectInterval;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 特种设备-安全阀台账实体
 * 表名 SPECIAL_DEV_SAFETY_VALVE
 *
 * @author sugon
 * @date 2021-09-08 16:30:40
 */

@Data
public class SpecialDevSafetyValveEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 备注
     */
    private String remark;
    /**
     * 最近一次更新用户
     */
    private String updateUser;
    /**
     * 最近一次更新时间
     */
    private Date gmtModified;
    /**
     * 创建用户
     */
    private String createUser;
    /**
     * 创建日期
     */
    private Date gmtCreate;
    /**
     * 最近一次检验周期
     */
    private Date latestInspectDate;
    /**
     * 检验周期，一般为月
     */
    private Integer inspectInterval;

    /**
     * 检验周期字符串格式，一般为月
     */
    private String inspectIntervalStr;

    public String getInspectIntervalStr() {
        return inspectInterval != null ? inspectInterval.toString() : "";
    }

    private String inspectIntervalDesc;

    public String getInspectIntervalDesc() {
        DevInspectInterval interval = DevInspectInterval.getByMonths(inspectInterval);
        return interval != null ? interval.getDesc() : null;
    }

    /**
     * 使用部门
     */
    private String userDept;
    /**
     * 安装位置
     */
    private String location;
    /**
     * 整定压力(PM)
     */
    private BigDecimal setPressure;
    /**
     * 工作压力
     */
    private BigDecimal workPressure;
    /**
     * 通径(mm)
     */
    private Integer driftDiameter;
    /**
     * 安全阀型号
     */
    private String model;
    /**
     * 安全阀类别:弹簧式、脉冲式、重锤式等
     */
    private String type;
    /**
     * 使用状况
     */
    private String state;
    /**
     * 设备名称
     */
    private String devName;
    /**
     * 主键
     */
    private String id;
    /**
     * 出厂编号
     */
    private String productNo;
    /**
     * 介质
     */
    private String substance;

    /**
     * 检验报告编号
     */
    private String inspectReportNo;

    /**
     * 所属设备，手动输入
     */
    private String underDevice;

    /**
     * 设备编码，系统自动生成，区别于设备代码(线下使用的)
     */
    private String equipmentCode;

    /**********以下为VO字段，关联查询获取**********/

    /**
     * 序号
     */
    private Integer idx;

    /**
     * 使用单位名称
     */
    private String userDeptName;

    /**
     * 检测机构ID
     */
    private String inspectUnit;

    /**
     * 检测机构名称
     */
    private String inspectUnitName;

    /**
     * 下次检测时间
     * 通过最近检验日期和检测周期得出
     */
    private Date nextInspectDate;

    public Date getNextInspectDate() {
        if (latestInspectDate != null && inspectInterval != null) {
            return DateUtil.offsetMonth(latestInspectDate, inspectInterval);
        }
        return null;
    }

}
